Julia incluye un generador de números (seudo-)aleatorios (RNG, "Random Number Generator"). Cada vez que llamamos a la función rand()
, regresa un número aleatorio distinto. El generador de Julia es (actualmente) uno llamado Mersenne Twister. Utiliza ideas complejas de teoría de números para asegurarse que los números aleatorios son "suficientemente aleatorios".
[1] Teclea
rand()
en el REPL o en IJulia (por ejemplo, en JuliaBox). En IJulia, utiliza Shift-Enter
para ejecutar el comando y crear una nueva celda, o Ctrl-Enter
para ejecutar el comando y quedarse en la misma celda.
Hazlo varias veces. ¿Qué tipo de números regresa? Utiliza la función typeof
para verificar tu respuesta. El último valor se obtiene con ans
. ¿Entre dónde y dónde están acotados los números?
[2] ¿Qué pasa si tecleas rand
sin las paréntesis?
[3] Utiliza ?rand
para obtener ayuda sobre la función.
[4] ¿Cómo se pueden generar varios números aleatorios a la vez, usando rand
? ¿Y una matriz aleatoria? ¿Qué tipos tienen las respuestas obtenidas?
Hay varios paquetes disponibles para graficar en Julia. Comenzaremos con uno llamado PyPlot
, que es un interfaz de Julia a la librería matplotlib
de Python. Para asegurarte de tener instalado el paquete en tu sistema, haz
Pkg.add("PyPlot")
Necesitas estar conectado a internet. Esto se hace una sola vez para cada instalación de Julia.
Luego en cada notebook, utiliza
using PyPlot
para hacer disponible la funcionalidad del paquete.
[5] Genera un número grande de números aleatorios usando rand
. Asigna la respuesta obtenida a una variable x
.
Usa plot(x)
para dibujar los resultados. Puedes agregar una opción "o"
a la función plot
para dibujar con puntos.
[6] Define una variable entera N
. Genera dos colecciones de números aleatorios x
y y
, las dos de longitud N
. Dibuja los pares $(x,y)$ con
plot(x, y)
con puntos. Utiliza
axis("equal")
para que la razón de aspecto se vea mejor.
¿Qué observas? ¿Qué tipo de distribución tienen los números aleatorios?
[7] Genera una colección de números aleatorios x
. Genera otra colección y
con el mismo tamaño que x
pero con puros ceros, usando la función zeros
. Dibuja el resultado para ver cómo se distribuyen los números aleatorios en una sola dimensión.
¿Para qué utilizamos los números aleatorios? A menudo, es para llevar a cabo una operación con cierta probabilidad.
[8] Pensando en cómo se distribuyen los números aleatorios, ¿cómo se puede llevar a cabo una operación con probabilidad 0.5? ¿Con probabilidad $p$ tal que $0 < p < 1$?
[9] Define una función que genera un paso de una caminata aleatoria, que toma pasos a la izquierda con probabilidad 0.5 y a la derecha con probabilidad 0.5. La función regresa el paso escogido.
[10] Generaliza tu función para aceptar un argumento p
que corresponde a la probabilidad $p$ de brincar a la derecha, y $1-p$ a la izquierda.
[11] Haz una función que genera una trayectoria de una caminata aleatoria con $N$ pasos y probabilidad $p$.
In [1]:
function f(p,n)
x=[0.0]
for i in 2:n
if rand()<=p
push!(x,x[i-1]+0.5)
else
push!(x,x[i-1]-0.5)
end
end
return x
end
Out[1]:
In [2]:
using PyPlot
In [4]:
plot(f(0.5,100))
Out[4]:
In [ ]: